![]() 一種具有分散式暫存器檔案之超長指令數位訊號處理器的內在支援提供方法及其編譯器
专利摘要:
一種具有分散式暫存器檔案之超長指令數位訊號處理器的內在支援提供方法,包含下列步驟:產生一程式表示,其具有關於數位訊號處理器之指令之一叢集資訊,其中叢集資訊係由一具有叢集內在編碼之程式提供;辨認程式表示中指明作用於不同資料集之平行指令序列之資料流運作;辨認程式表示中指明資料流運作所共用資料之資料共用關係;辨認程式表示中指明從資料流運作所匯集之結果之資料匯集關係;以及依據辨認出之資料流運作、資料共用關係以及資料匯集關係,執行數位訊號處理器之暫存器分配。 公开号:TW201319936A 申请号:TW101131679 申请日:2012-08-31 公开日:2013-05-16 发明作者:Jenq-Kuen Lee;Chi-Bang Kuan 申请人:Nat Univ Tsing Hua; IPC主号:G06F8-00
专利说明:
一種具有分散式暫存器檔案之超長指令數位訊號處理器的內在支援提供方法及其編譯器 本揭露係關於一種編譯方法,特別是關於一種具有超長指令架構及分散式暫存器檔案之數位訊號處理器的內在支援提供方法。 為了處理不斷增加之多媒體工作量,單指令多資料流(single-instruction-multiple-data,SIMD)計算已廣泛地於大多數現代處理器中,並以多媒體延伸指令集之方式實現。近來,這些多媒體延伸指令集已可對128位元或256位元向量暫存器中之數個資料執行運作。相似地,具有超長指令(very-long-instruction-word,VLIW)架構之數位訊號處理器(digital signal processing processor,DSP processor)通常具備子字(subword)指令以加速子字資料處理。雖然超長指令數位訊號處理器之子字指令向量寬度(通常為32位元)較一般用途處理器為短,但對於嵌入式系統中之影像及音訊/視訊處理來說已足夠。除子字指令外,超長指令數位訊號處理器之功能單元亦可用來平行處理數個資料流。舉例來說,具有兩個乘法單元且可同時發出五道指令之超長指令數位訊號處理器每周期可發出兩個乘法運算及五個非乘法運算。透過增加功能單元之數量可擴展此發送平行指令之單指令多資料流能力。然而,集中式暫存器檔案之特性卻使無限制增加功能單元會因為暫存器檔案及功能單元間之接線所增加之晶片面積及功率消耗而有困難。因此,許多嵌入式超長指令數位訊號處理器採用分散式暫存器檔案(distributed register files,DRFs)以透過叢集化功能單元,以及私有化叢集與甚至是功能單元之暫存器檔案,減少接線。 圖1之左側顯示具有集中式暫存器檔案之超長指令數位訊號處理器之示意圖,右側顯示具有分散式暫存器檔案之超長指令數位訊號處理器之示意圖。如圖1所示,雖然分散式暫存器之設計對可擴充性有貢獻,但卻因為減少之資料(或暫存器)可存取性而犧牲效能及增加程式撰寫的難度。另外,當採用分散式暫存器檔案設計時,資料存取是一個重大的考量,此時功能單元間之資料共用可能會招致一至多個處理器週期的存取延遲。因此,使編譯器在使用功能單元執行平行資料流處理有困難,所以亟需設計一編譯方法,透過支援及辨認使用者所提供程式中的內在資訊,簡化編譯器使用多個功能單元進行多資料流平行運算的難度。 本揭露一實施例之具有分散式暫存器檔案之超長指令數位訊號處理器包含複數個叢集。每一叢集包含複數個功能單元、複數個局部暫存器檔案連接複數個功能單元其中之一,以及至少一全域暫存器檔案。每一至少一全域暫存器檔案包含複數個全域暫存器庫連接複數個功能單元其中之一。 本揭露一實施例提供一種具有超長指令架構及分散式暫存器檔案之數位訊號處理器的內在支援提供方法,包含下列步驟:產生一程式表示,其具有關於數位訊號處理器之指令之一叢集資訊,其中叢集資訊係由一具有叢集內在編碼之程式提供;辨認程式表示中指明作用於不同資料集之平行指令序列之資料流運作;辨認程式表示中指明資料流運作所共用資料之資料共用關係;辨認程式表示中指明從資料流運作所匯集之結果之資料匯集關係;以及依據辨認出之資料流運作、資料共用關係以及資料匯集關係,執行數位訊號處理器之暫存器分配。 本揭露一實施例之編譯器用於以提供一具有超長指令架構及分散式暫存器檔案之數位訊號處理器內在支援,當執行時,編譯器係用於以執行下列步驟:產生一程式表示,其具有關於數位訊號處理器之指令之一叢集資訊,其中叢集資訊係由一具有叢集內在編碼之程式提供;辨認程式表示中指明作用於不同資料集之平行指令序列之資料流運作;辨認程式表示中指明資料流運作所共用資料之資料共用關係;辨認程式表示中指明從資料流運作所匯集之結果之資料匯集關係;以及依據辨認出之資料流運作、資料共用關係以及資料匯集關係,執行數位訊號處理器之暫存器分配。 上文已相當廣泛地概述本揭露之技術特徵及優點,俾使下文之本揭露詳細描述得以獲得較佳瞭解。構成本揭露之申請專利範圍標的之其它技術特徵及優點將描述於下文。本揭露所屬技術領域中具有通常知識者應瞭解,可相當容易地利用下文揭示之概念與特定實施例可作為修改或設計其它結構或製程而實現與本揭露相同之目的。本揭露所屬技術領域中具有通常知識者亦應瞭解,這類等效建構無法脫離後附之申請專利範圍所界定之本揭露的精神和範圍。 圖2顯示本揭露一實施例之超長指令數位訊號處理器之架構概觀。圖2所示處理器200為一32位元可同時發出五道指令之超長指令數位訊號處理器,其包含二叢集202與204。每一叢集包含一載入/儲存單元206、一算數邏輯單元208、二局部暫存器檔案210及212,以及一全域暫存器檔案214,其包含二全域暫存器庫216及218。另外,處理器亦包含一純量運算單元220連接於叢集202與204間。載入/儲存單元206負責通過一記憶體介面222進行記憶體存取以及叢集間通訊。算數邏輯單元208可執行乘法及飽和運算。純量運算單元220透過發出條件分支指令管理程式控制。如圖2所示,不同叢集中之功能單元沒有共用之暫存器檔案,不同叢集之功能單元所共用之資料必須透過載入/儲存單元206所發出之通訊於叢集間傳遞。同時在兩個叢集202與204中,每一功能單元206及208分別可存取本身的局部暫存器檔案210及212,但即使是存在於同一叢集中的其他功能單元也不能存取儲存於這些局部暫存器檔案210及212之資料。並且,一叢集中之功能單元所共用之資料必須存放在全域暫存器檔案214才可存取。為了減少接線,每一全域暫存器檔案被分割成兩個全域暫存器庫,並且限制這些全域暫存器庫之存取,禁止數個功能單元同時讀取及寫入一全域暫存器庫。也就是說,每一全域暫存器庫於一運作週期中僅提供互斥之讀取及互斥之寫入,如果多於一個功能單元嘗試自一全域暫存器庫讀取資料或對全域暫存器庫寫入資料,將產生全域暫存器庫爭用而造成指令編碼中的錯誤。 為了完全利用圖2所示處理器200之架構行為且符合其束制條件,本揭露之實施例提供一編譯器及其方法,其支援且辨識一使用者所提供程式的內在資訊。 圖3顯示用以提供具有分散式暫存器檔案超長指令數位訊號處理器內在支援之方法流程圖。於步驟301中,依據一具有內在資訊的使用者所提供程式產生一程式表示,再執行步驟302,其中內在資訊包括子字內在資訊,其指明數位訊號處理器200支援之指令,以及叢集內在資訊,其指明一指令與執行該指令之叢集間之對應關係。於步驟302中,辨認程式表示中指明作用於不同資料集之平行指令序列之資料流運作,再執行步驟303。於步驟303中,辨認程式表示中指明資料流運作所共用資料之資料共用關係,再執行步驟304。於步驟304中,辨認程式表示中指明從資料流運作所匯集之結果之資料匯集關係,再執行步驟305。於步驟305中,執行局部暫存器檔案及全域暫存器檔案之暫存器庫指派,再執行步驟306。於步驟306中,執行平行存取之資料複製,再執行步驟307。於步驟307中,執行實體暫存器指派,再執行步驟308。於步驟308中,執行程式表示之指令排程,再執行步驟309。於步驟309中,依據指令排程步驟之結果產生程式表示之組合程式碼。 圖4顯示本揭露一實施例之一段C程式。於本實施例中,編譯器包含一函式庫,其包含支援子字內在編碼以及叢集內在編碼之函式,例如圖4所示之_builtin_c1_add_d(int,int)。就子字內在編碼而言,本實施例之編譯器包含例如像int_builtin_add_d(int,int)及int_builtin_add_q(int,int)之函式,其中前者對應數位訊號處理器200支援之半字子字指令,後者對應數位訊號處理器200支援之四分之一字子字指令。就叢集內在編碼而言,本實施例之編譯器包含例如像int_builtin_c1_add(int,int)及int_builtin_c2_add(int,int)之函式,其中前者專屬於數位訊號處理器200之叢集202,後者專屬於數位訊號處理器200之叢集204。 因此,若將圖3所示之方法應用於圖4所示之C程式,於步驟301中,將產生一程式表示。圖5顯示一程式表示之範例。如圖5所示,某些指令(指令係以節點表示)已被指派給叢集204與206,而其他指令則尚未被指派給任何叢集。另外,連接指令節點之邊係表示資料,如圖中問號所標示,這些邊亦尚未被指派給任何暫存器檔案。於步驟302至304,編譯器辨識程式表示中關鍵的單指令多資料流元素。於步驟302中,辨認資料流運作的單指令多資料流元素,其中,資料流運作為類似且獨立之指令序列之集合。舉例來說,圖5中所示之四個分開之指令樹為四個資料流運作。於步驟303中,辨識資料共用關係之單指令多資料流元素,其中資料共用關係為數個資料流運作共用之資料。於步驟304中,辨識資料匯集關係之單指令多資料流元素,其中資料匯集關係為需合併之資料流運作結果。於辨認程式表示中的這些關鍵單指令多資料流元素後,即可依據辨認出之資料流動作、資料共用關係及資料匯集關係,執行數位訊號處理器200之暫存器分配。 於步驟305中,執行局部暫存器檔案及全域暫存器檔案之暫存器庫指派。於本實施例中,步驟305係以以下所示方式實施。第一,如果一資料僅由一個功能單元存取,分配資料至一局部暫存器檔案。第二,提供每一辨認出之資料流運作一專用的全域暫存器庫;以及如果一資料係由多於一個功能單元存取,分配資料至一全域暫存器庫,其中全域暫存器庫對應所分配之資料所屬之資料流運作。圖6顯示執行暫存器庫指派步驟後之結果。如圖6所示,所有的指令已被指派給叢集204或叢集206,且所有的資料已被指派給暫存器檔案,其中,D1至D4分別表示叢集202與204之暫存器檔案216與218,以及AC1與AC2分別表示叢集202與204之暫存器檔案212。 於步驟306中,執行平行存取之資料複製。於本實施例中,步驟306係以下述方式實施。如果暫存器庫指派之結果指示使一資料存在於數個全域暫存器庫,透過複製指令之方式從一全域暫存器庫複製一資料共用關係中之資料至另一全域暫存器庫。於執行資料複製步驟後,依序執行步驟307至309以產生組合程式碼。 綜合上述,本揭露提供一編譯器及其方法,其可提供具有分散式暫存器檔案之超長指令數位訊號處理器內在支援。因此,可更有效率地對於具有分散式暫存器檔案之超長指令數位訊號處理器執行使用者所提供程式之編譯。 本揭露之技術內容及技術特點已揭示如上,然而本揭露所屬技術領域中具有通常知識者應瞭解,在不背離後附申請專利範圍所界定之本揭露精神和範圍內,本揭露之教示及揭示可作種種之替換及修飾。例如,上文揭示之許多製程可以不同之方法實施或以其它製程予以取代,或者採用上述二種方式之組合。 此外,本案之權利範圍並不侷限於上文揭示之特定實施例的製程、機台、製造、物質之成份、裝置、方法或步驟。本揭露所屬技術領域中具有通常知識者應瞭解,基於本揭露教示及揭示製程、機台、製造、物質之成份、裝置、方法或步驟,無論現在已存在或日後開發者,其與本案實施例揭示者係以實質相同的方式執行實質相同的功能,而達到實質相同的結果,亦可使用於本揭露。因此,以下之申請專利範圍係用以涵蓋用以此類製程、機台、製造、物質之成份、裝置、方法或步驟。 200‧‧‧數位訊號處理器 202、204‧‧‧叢集 206‧‧‧載入/儲存單元 208‧‧‧算數邏輯單元 210、212‧‧‧局部暫存器檔案 214‧‧‧全域暫存器檔案 216、218‧‧‧全域暫存器庫 220‧‧‧純量運算單元 222‧‧‧記憶體介面 301-309‧‧‧流程步驟 圖1顯示具有集中式暫存器檔案及具有分散式暫存器檔案之超長指令數位訊號處理器之示意圖。 圖2顯示本揭露一實施例之超長指令數位訊號處理器之架構概觀。 圖3顯示用以提供具有分散式暫存器檔案超長指令數位訊號處理器內在支援之方法流程圖。 圖4顯示本揭露一實施例之一段C程式。 圖5顯示本揭露一實施例之一程式表示。 圖6顯示本揭露一實施例之另一程式表示。 301-309‧‧‧流程步驟
权利要求:
Claims (18) [1] 一種具有超長指令架構及分散式暫存器檔案之數位訊號處理器的內在支援提供方法,該數位訊號處理器包含複數個叢集,每一叢集包含複數個功能單元、複數個局部暫存器檔案連接該複數個功能單元其中之一,以及至少一全域暫存器檔案,每一該至少一全域暫存器檔案包含複數個全域暫存器庫連接該複數個功能單元其中之一,該內在支援提供方法包含下列步驟:產生一程式表示,其具有關於該數位訊號處理器之指令之一叢集資訊,其中該叢集資訊係由一具有叢集內在編碼之程式提供;辨認該程式表示中指明作用於不同資料集之平行指令序列之資料流運作;辨認該程式表示中指明該等資料流運作所共用資料之資料共用關係;辨認該程式表示中指明從該等資料流運作所匯集之結果之資料匯集關係;以及依據該等辨認出之資料流運作、資料共用關係以及資料匯集關係,執行該數位訊號處理器之暫存器分配。 [2] 如申請專利範圍第1項所述之內在支援提供方法,其中執行暫存器分配之步驟包含下列子步驟:執行該複數個局部暫存器檔案及該至少一全域暫存器檔案之暫存器庫指派;執行平行存取之資料複製;以及執行實體暫存器指派。 [3] 如申請專利範圍第2項所述之內在支援提供方法,其中執行暫存器庫指派之步驟包含下列子步驟:如果一資料僅由一個功能單元存取,分配該資料至該複數個局部暫存器檔案其中之一。 [4] 如申請專利範圍第2項所述之內在支援提供方法,其中執行暫存器庫指派之步驟包含下列子步驟:提供每一辨認出之資料流運作一專用的全域暫存器庫;以及如果一資料係由多於一個功能單元存取,分配該資料至一全域暫存器庫,其中該全域暫存器庫對應所分配之該資料所屬之該資料流運作。 [5] 如申請專利範圍第2項所述之內在支援提供方法,其中執行資料複製之步驟包含下列子步驟:如果暫存器庫指派之結果指示使一資料存在於數個全域暫存器庫,透過複製指令之方式從一全域暫存器庫複製一資料共用關係中之該資料至另一全域暫存器庫。 [6] 如申請專利範圍第1項所述之內在支援提供方法,更包含下列步驟:執行該程式表示之指令排程;以及依據指令排程步驟之結果產生該程式表示之組合程式碼。 [7] 如申請專利範圍第1項所述之內在支援提供方法,其中該程式表示係依據一具有內在資訊之程式產生,其中該內在資訊包含子字內在資訊,其指明該數位訊號處理器支援之數位訊號處理器指令。 [8] 如申請專利範圍第1項所述之內在支援提供方法,其中該程式表示係依據一具有內在資訊之程式產生,其中該內在資訊包含叢集內在資訊,其指明一指令與執行該指令之該叢集間之對應關係。 [9] 一種編譯器,用以提供一具有超長指令架構及分散式暫存器檔案之數位訊號處理器內在支援,該數位訊號處理器包含複數個叢集,每一叢集包含複數個功能單元、複數個局部暫存器檔案連接該複數個功能單元其中之一,以及至少一全域暫存器檔案,每一該至少一全域暫存器檔案包含複數個全域暫存器庫連接該複數個功能單元其中之一,其中該編譯器係用以執行下列步驟:產生一程式表示,其具有關於該數位訊號處理器之指令之一叢集資訊,其中該叢集資訊係由一具有叢集內在編碼之程式提供;辨認該程式表示中指明作用於不同資料集之平行指令序列之資料流運作;辨認該程式表示中指明該等資料流運作所共用資料之資料共用關係;辨認該程式表示中指明從該等資料流運作所匯集之結果之資料匯集關係;以及依據該等辨認出之資料流運作、資料共用關係以及資料匯集關係,執行該數位訊號處理器之暫存器分配。 [10] 如申請專利範圍第9項所述之編譯器,其中執行暫存器分配之步驟包含下列子步驟:執行該複數個局部暫存器檔案及該至少一全域暫存器檔案之暫存器庫指派;執行平行存取之資料複製;以及執行實體暫存器指派。 [11] 如申請專利範圍第10項所述之編譯器,其中執行暫存器庫指派之步驟包含下列子步驟:如果一資料僅由一個功能單元存取,分配該資料至該複數個局部暫存器檔案其中之一。 [12] 如申請專利範圍第10項所述之編譯器,其中執行暫存器庫指派之步驟包含下列子步驟:提供每一辨認出之資料流運作一專用的全域暫存器庫;以及如果一資料係由多於一個功能單元存取,分配該資料至一全域暫存器庫,其中該全域暫存器庫對應所分配之該資料所屬之該資料流運作。 [13] 如申請專利範圍第10項所述之編譯器,其中執行資料複製之步驟包含下列子步驟:如果暫存器庫指派之結果指示使一資料存在於數個全域暫存器庫,透過複製指令之方式從一全域暫存器庫複製一資料共用關係中之該資料至另一全域暫存器庫。 [14] 如申請專利範圍第9項所述之編譯器,更包含下列步驟:執行該程式表示之指令排程;以及依據指令排程步驟之結果產生該程式表示之組合程式碼。 [15] 如申請專利範圍第9項所述之編譯器,其中該程式表示係依據一具有內在資訊之程式產生,其中該內在資訊包含子字內在資訊,其指明該數位訊號處理器支援之數位訊號處理器指令。 [16] 如申請專利範圍第15項所述之編譯器,更包含一函式庫,其包含支援子字內在編碼之函式。 [17] 如申請專利範圍第9項所述之編譯器,其中該程式表示係依據一具有內在資訊之程式產生,其中該內在資訊包含叢集內在資訊,其指明一指令與執行該指令之該叢集間之對應關係。 [18] 如申請專利範圍第17項所述之編譯器,更包含一函式庫,其包含支援叢集內在編碼之函式。
类似技术:
公开号 | 公开日 | 专利标题 JP6159825B2|2017-07-05|ハードウェアポインタを使用したsimdコア内での分岐ブランチに対するソリューション JP6043374B2|2016-12-14|動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 US9672035B2|2017-06-06|Data processing apparatus and method for performing vector processing US8261046B2|2012-09-04|Access of register files of other threads using synchronization CN102124443B|2014-05-07|在单指令多数据|数据处理器中提供扩展寻址模式 US20120331278A1|2012-12-27|Branch removal by data shuffling JP2012103959A|2012-05-31|ベクトル処理回路、命令発行制御方法、及びプロセッサシステム US8539462B2|2013-09-17|Method for allocating registers for a processor based on cycle information US9600288B1|2017-03-21|Result bypass cache JP6502616B2|2019-04-17|バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法 JP6236093B2|2017-11-22|並列パイプラインにおいてブランチを分岐するためのハードウェアおよびソフトウェアソリューション US20130339689A1|2013-12-19|Later stage read port reduction TWI463399B|2014-12-01|一種具有分散式暫存器檔案之超長指令數位訊號處理器的內在支援提供方法及其編譯器 CN109683959B|2020-12-01|处理器的指令执行方法及其处理器 Qian2012|Automatic parallelization tools JP2021507374A|2021-02-22|命令を実行するためのシステム及び方法 TWI464682B|2014-12-11|用於處理器之複數個指令排程方法 JP2004287919A|2004-10-14|演算装置及び制御装置及び演算処理装置及び演算方法及び演算プログラム TWI751125B|2022-01-01|用以監控位址衝突的計數器 Lin et al.2007|Utilizing custom registers in application-specific instruction set processors for register spills elimination Lee et al.2014|Instruction scheduling and transformation for a VLIW unified reduced instruction set computer/digital signal processor processor with shared register architecture TW201905681A|2019-02-01|合併解決重命名尺寸問題的部分寫入結果的系統和方法 CN113934455A|2022-01-14|指令转换方法及装置 JPH06214801A|1994-08-05|自動並列化翻訳装置及び方法
同族专利:
公开号 | 公开日 US8656376B2|2014-02-18| TWI463399B|2014-12-01| US20130061022A1|2013-03-07|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US5276881A|1990-06-25|1994-01-04|Hewlett-Packard Company|ANDF producer using the HPcode-Plus compiler intermediate language| US7117342B2|1998-12-03|2006-10-03|Sun Microsystems, Inc.|Implicitly derived register specifiers in a processor| US6477683B1|1999-02-05|2002-11-05|Tensilica, Inc.|Automated processor generation system for designing a configurable processor and method for the same| JP3801545B2|2002-08-02|2006-07-26|松下電器産業株式会社|コンパイラ用プログラム、コンパイラ装置及びコンパイル方法| US7437719B2|2003-09-30|2008-10-14|Intel Corporation|Combinational approach for developing building blocks of DSP compiler| US7831804B2|2004-06-22|2010-11-09|St Microelectronics S.R.L.|Multidimensional processor architecture| JP2006243838A|2005-02-28|2006-09-14|Toshiba Corp|プログラム開発装置| GB0605349D0|2006-03-17|2006-04-26|Imec Inter Uni Micro Electr|Reconfigurable multi-processing coarse-grain array| WO2008154963A1|2007-06-18|2008-12-24|Interuniversitair Microelektronica Centrum |Programmable device for software defined radio terminal| US8051411B2|2007-08-08|2011-11-01|National Tsing Hua University|Method for copy propagations for a processor with distributed register file design| US20090228874A1|2008-03-07|2009-09-10|Interuniversitair Microelektronica Centrum Vzw |Method and system for code compilation| US8392789B2|2009-07-28|2013-03-05|Texas Instruments Incorporated|Method and system for decoding low density parity check codes| US8726281B2|2009-08-31|2014-05-13|Imec|Method and system for improving performance and reducing energy consumption by converting a first program code into a second program code and implementing SIMD| US9552206B2|2010-11-18|2017-01-24|Texas Instruments Incorporated|Integrated circuit with control node circuitry and processing circuitry|
法律状态:
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US13/223,489|US8656376B2|2011-09-01|2011-09-01|Compiler for providing intrinsic supports for VLIW PAC processors with distributed register files and method thereof| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|